package ioc

//
// 该包虽然命名成 IoC，但只是为了避免在 framework 包中直接调用 modules 包中的代码，
// 从而保持 framework 包不涉及具体的业务代码。
//

var _Container *Container

func InitGlobalContainer(container *Container) {
	_Container = container
}

// 获取 name 关联的对象并返回
func Get[T any](name string) T {
	if _Container == nil {
		panic("_Container nil")
	}

	obj := _Container.Get(name)
	result := obj.(T)

	return result
}
